/**
* @project admin-go-api
* @name sysPost
* @descriptions 岗位服务层
* @author 寒锋
* @date 2023-12-15 14:53:04
 */

package service

import (
	"admin-go-api/api/dao"
	"admin-go-api/api/entity"
	"admin-go-api/common/response"
	"admin-go-api/constants"
	"github.com/gin-gonic/gin"
)

type ISysPostService interface {
	CreateSysPost(c *gin.Context, sysPost entity.CreateSysPostDto)                                                              // 添加岗位
	GetSysPostById(c *gin.Context, Id int)                                                                                      // 岗位详情
	UpdateSysPost(c *gin.Context, sysPost entity.SysPost)                                                                       // 修改岗位信息
	DeleteSysPostById(c *gin.Context, dto entity.SysPostIdDto)                                                                  // 删除
	BatchDeleteSysPost(c *gin.Context, dto entity.DelSysPostDto)                                                                // 批量删除
	UpdateSysPostStatus(c *gin.Context, dto entity.UpdateSysPostStatusDto)                                                      // 更新状态
	GetSysPostList(c *gin.Context, PageNum, PageSize int, PostName, PostCode string, PostStatus int, BeginTime, EndTime string) // 列表
	QuerySysPostVoList(c *gin.Context)                                                                                          // 下拉列表
}

type SysPostServiceImpl struct {
}

// GetSysPostList 分页查询岗位列表
func (s SysPostServiceImpl) GetSysPostList(c *gin.Context, PageNum, PageSize int, PostName, PostCode string, PostStatus int, BeginTime, EndTime string) {
	if PageSize < 1 {
		PageSize = 10
	}
	if PageNum < 1 {
		PageNum = 1
	}
	sysPost, count := dao.GetSysPostList(PageNum, PageSize, PostName, PostCode, PostStatus, BeginTime, EndTime)
	data := map[string]interface{}{"total": count, "pageNum": PageNum, "pageSize": PageSize, "rows": sysPost}
	response.Success(c, data)
}

// QuerySysPostVoList 下拉列表
func (s SysPostServiceImpl) QuerySysPostVoList(c *gin.Context) {
	response.Success(c, dao.QuerySelectSysPost())
}

// CreateSysPost 添加岗位
func (s SysPostServiceImpl) CreateSysPost(c *gin.Context, sysPost entity.CreateSysPostDto) {
	result := dao.CreateSysPost(sysPost)
	if result {
		response.Success(c, nil)
		return
	}
	response.Failed(c, int(constants.ApiCode.PostAlreadyExists), constants.ApiCode.GetMessage(constants.ApiCode.PostAlreadyExists))
}

// GetSysPostById 岗位详情
func (s SysPostServiceImpl) GetSysPostById(c *gin.Context, Id int) {
	response.Success(c, dao.GetSysPostById(Id))
}

// UpdateSysPost 修改岗位
func (s SysPostServiceImpl) UpdateSysPost(c *gin.Context, sysPost entity.SysPost) {
	response.Success(c, dao.UpdateSysPost(sysPost))
}

// DeleteSysPostById 删除岗位
func (s SysPostServiceImpl) DeleteSysPostById(c *gin.Context, dto entity.SysPostIdDto) {
	dao.DeleteSysPostById(dto)
	response.Success(c, nil)
}

// BatchDeleteSysPost 批量删除岗位
func (s SysPostServiceImpl) BatchDeleteSysPost(c *gin.Context, dto entity.DelSysPostDto) {
	dao.BatchDeleteSysPostById(dto)
	response.Success(c, nil)
}

// UpdateSysPostStatus 修改岗位状态
func (s SysPostServiceImpl) UpdateSysPostStatus(c *gin.Context, dto entity.UpdateSysPostStatusDto) {
	dao.UpdateSysPostStatus(dto)
	response.Success(c, nil)
}

var sysPostService = SysPostServiceImpl{}

func SysPostService() ISysPostService {
	return &sysPostService
}
